﻿using System.IO;
using System.Xml;
using System.Xml.Serialization;

namespace TemplateLibraryConnector
{
    internal sealed class TinyXmlSerializer
    {
        public static T Deserialize<T>(string s)
            where T : class
        {
            return new XmlSerializer(typeof (T)).Deserialize(new StringReader(s)) as T;
        }

        public static string Serialize<T>(T o)
            where T : class
        {
            var ns = new XmlSerializerNamespaces();
            ns.Add("", "");
            var sw = new StringWriter();
            new XmlSerializer(typeof (T)).Serialize(new TinyXmlWriter(sw), o, ns);
            return sw.ToString();
        }

        #region Nested type: TinyXmlWriter

        private class TinyXmlWriter : XmlTextWriter
        {
            public TinyXmlWriter(TextWriter w)
                : base(w)
            {
                Formatting = Formatting.None;
            }

            public override void WriteStartDocument()
            {
            }

            // suppress
        }

        #endregion
    }
}